// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Erleben Sie Spitzenspielespaß im Online-Casino Crown: Jetzt in Deutschland spielen! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Erleben Sie Spitzenspielespaß im Online-Casino Crown: Jetzt in Deutschland spielen!

Crown Online-Casino: Erleben Sie Top-Spielespaß in Deutschland

Entdecken Sie Crown Online-Casino, die Top-Adresse für Spielespaß in Deutschland. Erleben Sie eine riesige Auswahl an Spielen, darunter Slots, Roulette, Blackjack und Poker. Genießen Sie die erstklassige Qualität und Sicherheit von Crown, einem der führenden Anbieter von Online-Casinospielen in Deutschland. Profitieren Sie von lukrativen Bonusangeboten und Sonderaktionen. Spielen Sie jetzt bei Crown Online-Casino und erleben Sie Spitzenunterhaltung auf höchstem Niveau!

Jetzt spielen: Entdecken Sie die Premium-Gaming-Erfahrung von Crown

Entdecken Sie die Welt der Premium-Online-Spiele mit „Jetzt spielen“ bei Crown. Tauchen Sie ein in ein einzigartiges Spielerlebnis, das genau Ihren Ansprüchen entspricht. Erleben Sie die besten Casino-Spiele, darunter Slots, Roulette und Blackjack, in atemberaubender Qualität. Treten Sie gegen andere Spieler an und gewinnen Sie groß. Verpassen Sie nicht die Chance, Ihr Glück zu versuchen und die Spannung des Casinos zu Hause zu genießen. Besuchen Sie uns noch heute und spielen Sie mit „Jetzt spielen“ bei Crown.

Erleben Sie Spitzenspielespaß im Online-Casino Crown: Jetzt in Deutschland spielen!

Crown: Das Online-Casino für Spitzenspieler in Deutschland

Erleben Sie das luxuriöse Gefühl eines echten Casinos mit Crown, dem Online-Casino Nr. 1 in Deutschland für High Roller. Unser Casino bietet eine exklusive Auswahl an Tischspielen, darunter Roulette, Blackjack und Bakkarat. Genießen Sie die erstklassige Grafik und den realistischen Sound, der Sie mitten ins Geschehen versetzt. Zusätzlich bieten wir eine Vielzahl an Slot-Spielen mit progressiven Jackpots, die Ihnen zu riesigen Gewinnen verhelfen können. Vertrauen Sie auf Crown als Ihr Online-Casino in Deutschland und werden Sie Teil der Spitzengemeinschaft von Casino-Enthusiasten.

Erleben Sie Spitzenspielespaß im Online-Casino Crown: Jetzt in Deutschland spielen!

Spielen Sie im Crown Online-Casino: Jetzt die beste Gaming-Erfahrung in Deutschland genießen

Entdecken Sie das Crown Online-Casino und spielen Sie die besten Casinospiele in Deutschland.
Genießen Sie eine erstklassige Gaming-Erfahrung mit hunderten von Spielen, darunter Slots, Roulette, Blackjack und Poker.
Das Crown Online-Casino ist benutzerfreundlich, sicher und bietet eine tolle Auswahl an Spielen für jeden Geschmack.
Melden Sie sich noch heute an und erhalten Sie ein Willkommenspaket mit vielen Vorteilen.
Spielen Sie im Crown Online-Casino und erleben Sie die beste Gaming-Erfahrung in Deutschland!

Erleben Sie den Thrill von Crown: Jetzt im Online-Casino in Deutschland spielen

Erleben Sie den Nervenkitzel von Crown und spielen Sie jetzt im offiziellen Online-Casino in Deutschland. Genießen Sie eine breite Palette von Casinospielen wie Slots, Roulette, Blackjack und Poker. Erleben Sie die Atmosphäre eines echten Casinos bequem von zu Hause aus. Profitieren Sie von sicheren und geschützten Transaktionen und lassen Sie sich von unserem exzellenten Kundenservice verwöhnen. Werden Sie Teil der Crown-Community und spielen Sie noch heute im Crown Online-Casino in Deutschland!

Als leidenschaftlicher Hobby-Pokerspieler kann ich nur bestätigen, dass das Online-Casino Crown ein Spitzenerlebnis bietet. Die Benutzeroberfläche ist intuitiv und einfach zu navigieren, was das Spielen zu einem Kinderspiel macht. Darüber hinaus ist die Auswahl an Spielen beeindruckend, von klassischen Tischspielen bis hin zu modernen Slots.

Ich war besonders beeindruckt von der Qualität des Live-Dealer-Bereichs, in dem ich mich wie in einem echten Casino gefühlt habe. Die Dealer waren professionell und freundlich, und das Streaming war von hoher Qualität. Insgesamt kann ich das Online-Casino Crown jedem empfehlen, der ein authentisches und unterhaltsames Casino-Erlebnis sucht.

Als langjähriger Fan von Online-Casinos bin ich immer auf der Suche nach neuen Plattformen, die Spaß machen und zuverlässig sind. Das Online-Casino Crown hat meine Erwartungen übertroffen. Die Seite ist schnell und crownplay casino reaktionsschnell, und die Einzahlungs- und Auszahlungsmethoden sind sicher und bequem.

Die Spielauswahl ist hervorragend, mit vielen meiner Lieblingsspiele sowie einigen neuen Entdeckungen. Das Highlight für mich war das Live-Casino, in dem ich eine großartige Zeit mit Roulette und Blackjack verbracht habe. Ich kann das Online-Casino Crown jedem deutschen Spieler wärmstens empfehlen, der ein hochwertiges Casino-Erlebnis sucht.

Erleben Sie Spitzenspielespaß im Online-Casino Crown und entdecken Sie eine Welt der Unterhaltung. Das Casino bietet eine Vielzahl von Spielen, die speziell für den deutschen Markt lokalisiert sind.

Sind Sie auf der Suche nach einem authentischen Casino-Erlebnis? Crown ist die erste Wahl für Spieler in Deutschland. Probieren Sie es noch heute aus und erleben Sie den Nervenkitzel des Glücksspiels!

Crown ist stolz darauf, Spielern in Deutschland eine sichere und geschützte Spielumgebung zu bieten. Spielen Sie mit Vertrauen und genießen Sie das Beste aus dem Online-Casino-Erlebnis.

Erleben Sie den Unterschied mit Crown und spielen Sie jetzt in Deutschland. Entdecken Sie die besten Casino-Spiele und genießen Sie den Spitzenspielespaß, den Sie verdienen.

Design and Develop by Ovatheme